// 1- 先引入内置模块  2- 再引入第三方模块 3- 最后引入自定义模块
import adminListV from "../view/adminList.ejs";
import adminTableC from "../components/AdminTable.ejs";
import {deleteAdmin, getAdminList, postAdmin} from "../api/admin";

// 添加管理员事件处理函数
const addAdminBtnHandler = async function(){
	// 收集数据：
	// 1- 为表单增加一个name属性
	// 2- 为表单元素增加一个name属性
	// 3- document.表单name属性值.表单元素name属性值.value
	// console.log("addAdminBtnHandler",document.adminForm.adminName.value)
	const adminName = document.adminForm.adminName.value;
	const password = document.adminForm.password.value;
	const rePassword = document.adminForm.rePassword.value;
	// 判断adminName是否符合表达式的要求
	if(!/^[a-z]+$/i.test(adminName)){
		toastr.error('请输入正确的管理员账号-只支持英文！');
		return;
	}
	if(!/^\w+$/.test(password)){
		toastr.error("密码只支持数字、字母、下划线");
		return;
	}
	if(password !== rePassword){
		toastr.error("两次密码需要完全一致");
		return;
	}
	// 添加管理员信息
	const data = await postAdmin({adminName,password});
	toastr.success(data.msg);// 给予成功提示

	document.querySelector("#adminCancel").click();
	// 1- 管理员列表需要更新
	getAdminListAsync();
	// 2- 点击添加管理员弹出的表单需要重置
	document.adminForm.reset();

}
const getAdminListAsync = async function(){
	const data = await getAdminList();
	document.querySelector("#adminTable").innerHTML = adminTableC(data);
}
export default ()=>{

	return async (req,res)=>{

		res.render(adminListV());
		document.querySelector("#addAdminBtn").onclick = addAdminBtnHandler;
		document.querySelector("#adminTable").onclick = async function(e){
			// console.log(e.target.classList.contains("btn-danger"))
			// 点击的元素如果拥有btn-danger样式即条件成立
			if(e.target.classList.contains("btn-danger")){
				console.log("删除",e.target.dataset.id)
				// 调用API
				await deleteAdmin(e.target.dataset.id);
				// 更新表格
				getAdminListAsync();
			}else if(e.target.classList.contains("btn-success")){
				console.log("修改密码")
			}
		}
		getAdminListAsync();
	}
}